Blue Instant Graphics! Online Interpreter Copyright 1991-92 by Larry Mears All rights reserved. Version 1.02 Shareware BIG City bbs 205-880-9896 experimental graphics research board. Index * = command limited or not available in DEMO VERSION 1 - Introduction, Installation, Background 2 - Syntax, bug reports, Author address 3 - Alt keys their functions 4 - Home, Page Up and Page Down key functions, Parity 5 - g...graphics scaling 6 - G.*.BitBlit, page flip operations 7 - I...Initialize, A...fill patterns 8 - H...Hollow set, M...drawing Mode, T...Types line and polymarker 9 - E...Text Effects, R...Resolution, C...Operation Color, S.*.Setcolor palette, P...Plot polymarker 10 - L...Line draw, D...Drawto, d...draw relative, W...Write Text, F...Floodfill 11 - Z...rectangle, B...Bars 3d, K...draws a Arc, J...elliptical Arc, O...circle 12 - Q...ellipse, V...pieslice, Y...elliptical pieslice, m...Move relative 13 - p...Position cursor, s...Screen clears, t...time pause 14 - <...Input command 15 - ?...Ask BIG 16 - &...LOOP 18 - X 0...Spray Paint, X 1...Define a custom fill pattern, X 2...Random range 19 - X 3...Custom text size, X 4...Load Zone data 20 - X 5...Flow control, X 6...Mouse step rate 21 - X 7...Sync music, X 8...Color Rotation 22 - b.*.Sound effects 23 - n...Notes play pitches 24 - N.*.Adlib tm Sound Card commands - 1 - Blue Instant Graphics! Online Interpreter Copyright 1991-92 by Larry Mears All rights reserved. Version 1.02 Shareware With online point and click commands, uses the ARROW keys or mouse driver that sends ARROW key presses out. INTRO Blue Instant Graphics! (BIG) terminal brings a whole new concept in online graphics! Now see TRUE online graphics. If you are tired of the blocky ANSI graphics that most BBSs offer, then you will be pleasantly surprised by the super fast high resolution graphics this NEW terminal emulation unleases! It's wild, read on! INSTALLATION You must have a RS232 driver loaded. This terminal was written and and tested under BNU.SYS v170, X00.SYS should work fine too. You can find these drivers on most any BBS. Look for BNU170.ZIP You have to add a line in your CONFIG.SYS file like this: device = bnu.sys /R:16384 OR for X00.SYS device = X00.sys R=16384 DO NOT lock the baud rate to 19200 with a COMPUCOM SPEEDMODEM let the autodialer set it to 9600 else the Zmodem and function keys will not work. The reason I used a external driver is simple, the RS232 buffer is adjustable and some BIG commands need a big receive buffer. These fine drivers have been around and better than I could have written myself. Since I didn't write the drivers myself I can't include them in this ZIP file also the Zmodem primatives are written and Copyrighted By Omen Technology so the Zmodem implementation in BIG works fully and is FREE even in the BIG demo version. The shareware fee is charged for the registering of BIG and the advanced graphic and sound features such as online Adlib tm support, special sound effects and bitblit operations. SOME BACK GROUND BIG does graphics by way of a attention command sequence, simular to a Hayes modem, and interprets one letter commands and values up to 9999. It also does ANSI graphics in their standard form. BIG also exists as Instant Graphics!(IG) in the Atari ST online world. BIG was written after IG and is not fully compatible with IG but VERY simular. You should be able to get IG scripts off Atari BBSs and alter them slightly to work. It would be advisable to get the IG doc, look for IG216.ARC So, what's so great about BIG graphics? Well it means lines, circles, ovals, rectangles, fill patterns, system fonts, you can have BIG COLORED text any where on the screen. BIG with a little help from the users out there could open a new door for telecommunications. This terminal would allow better game programs to be written for BBS doors. Another use is bar and pie charts. A good idea would be to have a online comic strip. There are lot's of possibilities and if user $upport is up to par I'll put more good ideas for commands into the next version. - 2 - SYNTAX BIG is case sensitive. I# gets it's attention i# does not. commands can be chained with the > character but they can not exceed one line, unless you use the _ option as the first digit in a number passed. In other words BIG does not check for a linefeed or CR all the time, it will try to interpret it as a command, chain character, value, or value separator. Line noise will of course blow it's performance to shreds. Any non numerical character can be used as a value separator, I suggest a comma or space. I like to use a : to separate commands when chaining but you can use any non numerical character. If you don't use the chain character you have to have some character there anyway so why not a space, looks good and saves confusion. When using the W command the string is ended with the @ character and if chaining the next command comes directly after the @ no separator at all. OK, I guess you need to see a example to study over. Chain example: I#s>0:b>5:C>3,14:E>5,2,0:W>20,90,Let's plot text!@t>5:b 1: Notice the 't' directly after the @ in the last 'b' command has no > after it this will break the chain sequence and keep the carriage return and linefeed from being eaten. Most always you want the CR LF eaten so if you want the carriage return and linefeed to not be present in your display use the ">" chain indicator and put a : after the last digit in the line. BIG allows splitting of lines with the _ character, the _ has to be used in place of the first digit in a value passed it causes BIG to eat 2 characters such as CR & LF, see below. example: I#L>0,0,100,0:D>100,100:D>0,100:D>0,0:O>49,49,_ 25: <-Note No left margin allowed. You can execute commands on fly in the same line by having several I#'s. example: Don't get I#b 3:stuck in a I#t 3:LOOP!I#b 8:!!! Notice the space between the command and the number, meaning don't chain and the colon after the numbers. The colon will be eaten by the routine that gets numbers from the modem. It has to know when to quit and any non numerical character gets swallowed. A colon after the commands parameters are passed looks good anyway, right? Shades of BASIC huh? Also the commands are case sensitive. A M is a totally different command than m, so be careful. Send Shareware registration fee $25 (use REGISTER.TXT form only or hand printed copy or it), bug reports and comments to: Larry Mears 11027 Crestfield Dr. Huntsville, Alabama 35803 USA I'll try to fix bugs if I can but, I can not guarantee a fix and I will not be held responsible for any problems caused by use of this software. Use your favorite text editor to edit the graphic script files. A mouse driven paint style program may be written eventually. Registered users will receive a digital KEY that enables *advanced features in the terminal and major updates at 60% off standard register fee. - 3 - KEYBOARD COMMANDS for BIG ------------------------- ALT-KEYS Alt-A Edit Autolog. Autolog will wait for a string from a BBS and respond with your reply. If the first character of the wait string is a ! there will be no wait at all the response will be sent immediately! A ~ character pauses for one second and a | sends a carriage return. Alt-B Busy the board. If you are online and nature suddenly calls hit this and a SPACE BACKSPACE sequence will be sent to the BBS while you are absent from your keyboard. Most BBSs log off inactive users this gives you a break. Alt-C Connect time and Current time display. Alt-D This is the AUTODIALER it will dial one bbs or several until it gets a CONNECT from the modem. If a BBS isn't BUSY and just rings and rings AUTODIAL will abort if only one BBS number is being dialed. To dial several BBSs at once just type their numbers like: 23 1 3 5 4 6 etc... Alt-F Edit the function keys. F1 thru F10 and ALT-F1 thru ALT-F10 String of characters up to 128 characters. Special characters are the ~ wait 1 second and the | for a carriage return. Alt-G Graphics On/Off, Oh no! sound=off, pinball sound=on. Sometimes you may want to EDIT graphics while online, if so you must cut graphics OFF first! Alt-H Pulls up the Help screen. Alt-J Will JUMP to DOS showing free memory left. You can run programs and do disk formats etc. Type EXIT to return to BIG. Alt-L This is the AUTOLOG feature it captures incoming text from the serial port graphics and all. It saves them to disk under the prepicked filename from the ALT-O function. If the file already exists you have the option to append or start new. Alt-N Shut off sound effects this is a toggle on/off default is on. If you save the config file( ALT-O ) with sound effects off they will be off when BIG is ran again. Alt-O This is the options that are saved into the BIG.CFG file that is read at runtime. Upload, Download paths, where and what name the Capture Log will have, Serial Port to use Baud rate at startup and Address of your SOUND CARD. Alt-P This is the DUPLEX toggle default is FULL duplex, hit it if you need HALF duplex such as on GEnie tm. Alt-T Alternate file Transfer methods. Here you have ASCII upload with delays between characters optional. The delays are good for uploading a message into a message editor slow enough so it can handle it as if you were speed typing it. Then there is Xmodem Checksum for boards that don't support the Zmodem available with the PAGE-UP and PAGE-DOWN keys. Alt-X Exit BIG. Direct exit unless Capture Log not closed. - 4 - OTHER KEYS HOME Clear screen, restore default resolution and colors, set screen to page 0 PAGE UP Upload a file using Zmodem. PAGE DOWN Download a file using Zmodem. CONTROL-X Aborts a Zmodem or Xmodem transfer. NOTE: Repeated ^C ^X will abort a '&' LOOP command gone bad. It isn't a good idea to ^S and ^Q graphics while they are executing, except when using BF.EXE PARITY Due to the advanced capabilities of the BIG terminal 8 data bits are required. BIG is set to ( 8,N,1 ) and this is what 98% of the BBSs are out there anyway. If you must have ( 7,E,1 ) use your old favorite. - 5 - BLUE INSTANT GRAPHICS! ---------------------- g Graphic scaling I#g 3: or I#g 2: or I#g 0: ------------------ g = command identifier Turn graphic scaling on or off. This is to save you time when converting your graphics from Atari tm IG's medium resolution. I#g 2: or I#g 3 at the top of the IG script and a I#g 0: at the end if you want to cut it back off. This will fix the medium res IG graphics (640x200) to run in 640x350 and 640x480 BIG modes. This only adjusts the X Y coordinates, it doesn't fix other incompatibilities between BIG and IG. Keep in mind that none of these 'g' options work within a "& LOOP". Parameter: 0 = off 1 = no effect 2 = Y coordinate *1.75 if in BIG mode 640 x 350 3 = Y coordinate *2.4 if in BIG mode 640 x 480 - 6 - G grab screen * I#G 0,0,0,0,100,100,100,50: active to active -------------- * I#G 1,0,0,0,100,100: active to memory * I#G 2,0,200,50: memory to active * I#G 3,0,50,50,75,75,150,100: piece of memory to active I#G 4,1: select memory page I#G 5,0: select visual page I#G 6,0: select active page G = command identifier Screen grab, "Bit-Blit". 64K portion max. Grabs a rectangular portion of the screen copies it to another portion of the screen or to memory, or copies memory to screen, or set active, visual, and memory pages, depending on 1st parameter. If res is set to 3 there is only one screen page(0). Res 2 has 2 pages(0-1), res 1 supports 4 pages(0-3). Use the R command to change resolutions. * Indicates not available in DEMO VERSION. SEE REGISTER.TXT 1st parameter sets type of blit to do: 0 = active screen page to active screen page 1 = active screen page to memory screen page 2 = blit buffer memory to active screen page 3 = piece of memory screen page to active screen page 4 = select memory screen page 5 = select visual screen page 6 = select active screen page 2nd parameter sets writing mode for the blit operation if 1st parameter is 3 or less. mode logic...............Description 0 COPY_PUT............Complete overwrite 1 XOR_PUT.............Exclusive-ORed 2 OR_PUT..............Logically ORed 3 AND_PUT.............Logical AND 4 NOT_PUT.............Logically inverted with overwrite The rest of the parameters depend on the 1st parameters setting: IF 1st PARAMETER = 0 "active to active" 3rd = X source, upper left corner 4th = Y source, upper left corner 5th = X source, lower right corner 6th = Y source, lower right corner 7th = X destination, upper left corner 8th = Y destination, upper left corner Active screen to active screen, remember active screen does not have to be the visable screen. IF 1st PARAMETER = 1 "active to memory" 3rd = X source, upper left corner 4th = Y source, upper left corner 5th = X source, lower right corner 6th = Y source, lower right corner Destination is same as where source came from. Puts image to memory screen page. ( continued on next page ) - 7 - IF 1st PARAMETER = 2 "memory to active" 3rd = X destination, upper left corner 4th = Y destination, upper left corner Puts whats in the blit buffer to active screen page. IF 1st PARAMETER = 3 "piece of memory to screen" 3rd = X source, upper left corner 4th = Y source, upper left corner 5th = X source, lower right corner 6th = Y source, lower right corner 7th = X destination, upper left corner 8th = Y destination, upper left corner Puts image from memory screen page to active screen page. IF 1st PARAMETER = 4 "select memory screen page" 2nd = page number (0-3) If res=1 max is 3 If res=2 max is 1 if res=3 max is 0 IF 1st PARAMETER = 5 "select visual screen page" 2nd = page number (0-3) If res=1 max is 3 If res=2 max is 1 if res=3 max is 0 IF 1st PARAMETER = 6 "select active screen page" 2nd = page number (0-3) If res=1 max is 3 If res=2 max is 1 if res=3 max is 0 I initialize I#I 0: ------------- I = command identifier Initializes color pallet and sets all operation colors to 15 WHITE, solid fills, medium resolution. Issue this command at the start and end of each graphic script and you'll have a common starting point. Parameter: 0 = Set resolution 2, pallet, and attributes, non-hollows, visual and active screen page to 0, poly marker to pixel, default line style. 1 = Set pallet and non-hollows only. A set Fill Pattern I#A 1: ------------------ A = command identifier Sets pattern to use for fills. 1st parameter selects pattern number: range 0 to 23 Pattern numbers 12-23 are redefinable, see X command number 1. - 8 - H hollow set I#H 0: ------------ H = command identifier When on non solids are drawn, a circle will be drawn instead of a disk. Parameter 1=on 0=off M drawing MODE I#M 1: -------------- M = command identifier Parameter sets drawing mode. 1 = replace 2 = XOR Has effect on lines and rectangles. T line, marker TYPES I#T 1,3,2: or I#T 2,1,0,0,1: --------------------- T = command identifier 1st parameter selects lines or polymarkers to change. 1 = polymarkers ( effects output of the P command ) 2 = lines ( effects D and L commands ) 2nd parameter picks type of line or polymarker depending value of 1st parameter. for polymarkers: 0 = pixel 1 = up arrow 2 = cross hair 3 = star 4 = square 5 = diagonal cross 6 = diamond 7 = square cross hair for lines: 0 = solid 1 = dotted line 2 = dash-dot 3 = dashed 4 = user defined IF 1st parameter = 2 (lines) 3rd parameter and 4th parameter are multiples to arrive at a 16 bit pattern to use as a line pattern. If 2nd parameter equals 4 for user defined else if you are using a predefined pattern 0 thru 3 just pass 0,0 for these values. 5th parameter = line width 0 = 1 pixel 1 = 3 pixels IF 1st parameter = 1 (polymarkers) 3rd parameter = size of polymarker range 1 thru 8 - 9 - E text EFFECTS I#E 4,2,1: -------------- E = command identifier Sets BGI text effects for text put on the screen with the W command. 1st parameter selects font 0 = normal 1 = Triplex 2 = Small 3 = Sansserif 4 = Gothic 2nd parameter sets text size 0 thru 4 IF size is 0 then the custom size defined X 3 command is used. 3rd parameter sets the text rotation. 0 = Horizontally 1 = 90 degrees R set Resolution I#R 1: ---------------- R = command identifier Allows switchs between low and medium and high resolution(VGA only). 1st Parameter selects resolution to switch to: 1 = low resolution 640x200 16 color 4 pages 2 = medium resolution 640x350 16 color 2 pages 3 = high resolution 640x480 16 color 1 page VGA only C color set I#C 0,2: ----------- C = command identifier Selects the register number to perform the screen operation with. 1st parameter selects screen operation color to change. 0 = Polymarker color, used for the (P plot command). 1 = line color 2 = fill color 3 = text color, used with the ( W command ). 2nd parameter selects the register number 0 thru 15. S setcolor register* I#S 0,4: -------------------- S = command identifier Sets one of the 16 color registers of the color palette. *This command is available to registered users only. 1st parameter selects register to change 0 thru 15. 2nd parameter is color value 0-63 P polymarker PLOT I#P 149,99: ----------------- P = command identifier Plot a point or polymarker shape on the screen. See also the entry for the T and C commands. 1st parameter = X coordinate 2nd parameter = Y coordinate - 10 - L draw LINE I#L 0,0,300,150: ----------- L = command identifier Draws a line between specified points. See also the entry for T and C commands. 1st parameter = begining X coordinate 2nd parameter = begining Y coordinate 3rd parameter = ending X coordiante 4th parameter = ending Y coordinate D line DRAWTO I#D 149,99: ------------- D = command identifier draws a line from the place the graphics was at. See also the entry for T and C commands. 1st parameter = X coordinate 2nd parameter = Y coordinate d DRAW relative I#d 1,20,1,40: --------------- d = command identifier draws a line relative to where the last place the graphics cursor was. 1st parameter = negative flag for X parameter 2nd parameter = X positions to drawto 3rd parameter = negative flage for Y coordinate 4th parameter = Y positions to drawto W WRITE text I#W 50,100,DEVO E-Z Listening Disc@ ------------- W = command identifier Writes text on screen at any X Y coordinate. Carriage Return and Linefeed are ignored so you can split the text to be written across two lines, the maximum length is 128 characters. The @ symbol ends the text to be written. See also the E and C commands. 1st parameter = X coordinate 2nd parameter = Y coordinate 3rd parameter = text ended with @ Chain example: I#W>20,50,Chain@L 0,0,300,190: F flood FILL I#F 600,0,1: ------------ F = command identifier Fills a area by replacing ALL colors starting at specified X Y coordinates till it hits a specified OPERATION COLOR. 1st parameter = X coordinate 2nd paraneter = Y coordinate 3rd parameter = specified OPERATION COLOR: 0 for ploymarker 1 line color - 11 - Z rectangle I#Z 10,10,200,100: ----------- Z = command identifer Draws a rectangle. Other related commands, H, T, A. 1st parameter = upper left corner X coordinate 2nd parameter = upper left corner Y coordinate 3rd parameter = lower right corner X coordinate 4th parameter = lower right corner Y coordinate B bar I#B 0,0,100,100,0: or I#B 50,50,150,150,1: ------ or I#B 50,50,150,150,10,1: B = command identifier General purpose command for drawing rectangles with borders and 3D bar graphs. A,T commands effect the bars drawn. 1st parameter = upper left corner X coordinate 2nd parameter = upper left corner Y coordinate 3rd parameter = lower right corner X coordinate 4th parameter = lower right corner Y coordinate 5th parameter = type 0=no border 1=yes border IF 2 or greater depth of 3d bar in pixels, and 6th parameter required 0 = no top 1 = draw top. K arc I#K 300,99,75,90,180: ------ K = command identifier Draws a ARC, which is part of a circle. 1st parameter = X coordinate for the circle center 2nd parameter = Y coordinate for the circle center 3rd parameter = radius of the circle 4th parameter = begining angle to start drawing at 5th parameter = ending angle to to stop drawing at J elliptical arc I#J 0,199,400,600,0,270: ----------------- J = command identifier Draws a elliptical ARC, which is part of a oval. 1st parameter = X coordinate for the oval center 2nd parameter = Y coordinate for the oval center 3rd parameter = X radius of the oval 4th parameter = Y radius of the oval 5th parameter = begining angle to start drawing at 6th parameter = ending angle to to stop drawing at O CIRCLE I#O 300,100,75: ---------- O = command identifier Draws a disc or circle depending if the H command is active or not. 1st parameter = X coordinate of circle center 2nd parameter = Y coordinate of circle center 3rd parameter = radius of circle - 12 - Q ellipse I#Q 300,100,200,60: ---------- Q = command identifier Draws an ellipse, which is a OVAL. See H and A commands also. 1st parameter = X coordinate of oval center 2nd parameter = Y coordinate of oval center 3rd parameter = X radius of oval 4th parameter = Y radius of oval V pieslice I#V 50,50,100,180,270: ----------- V = command identifier Draws a pieslice, which is part of a circle. 1st parameter = X coordinate for the circle center 2nd parameter = Y coordinate for the circle center 3rd parameter = radius of the circle 4th parameter = begining angle to start drawing at 5th parameter = ending angle to to stop drawing at Y elliptical pieslice I#Y 80,80,100,200,0,180: ---------------------- Y = command identifier Draws a elliptical pieslice. which is part of a OVAL. 1st parameter = X coordinate for the oval center 2nd parameter = Y coordinate for the oval center 3rd parameter = X radius of the oval 4th parameter = Y radius of the oval 5th parameter = begining angle to start drawing at 6th parameter = ending angle to to stop drawing at m move relative I#m 1,20,0,10: or I#m 2,199,120: ---------------- m = command identifier Moves graphics moves cursor relative or to a specific X Y coordinate. 1st parameter selects direction or operation. 0 = move relative X positive. 1 = move relative X negative. 2 = MOVETO specific coordinates. 2nd parameter is number X pixels to move or if 1st parameter = 2 then it's a specific X coordinate to goto. 3rd parameter selects direction or specific Y 0 = move relative Y positive. 1 = move relative Y negative. or if 1st parameter = 2 then it's a specific Y coordinate to goto. 4th parameter is number Y pixels to move relative. If 1st parameter = 2 this parameter is omitted. - 13 - p position I#p 70,19: ----------- p = command identifier Positions cursor at column, line. Like X Y only with characters. Caution this command only works on page 0. 1st parameter = column 1 thru 80 2nd parameter = line 1 thru 25 s screen clear I#s 0: --------------- s = command identifier Clears whole screen. Parameter = type of clear 0 = clear graphics screen, send text cursor home, send graphics cursor to 0,0 1 = clear graphics screen, send graphics cursor 0,0 2 = clear screen with text clear, send text cursor home. t time a pause I#t 2: --------------- t = command identifier Tells BIG to send ^S, times it for X seconds and then tells BIG to send ^Q. Any key will abort the pause prematurely. MAX time is 30 seconds if more of a pause is needed chain a few together. I#t>30:t 5: I'm hoping this will eliminate the BBS from timing out and logging a user off. See also X command number 5. Parameter = number of seconds to pause, 30 max. - 14 - < INPUT Command I#< 1,0,1: ---------------- Gets input from user's keyboard and transmits it as soon as the chain " > " from the last I# is broke. Should be used near the end of a MENU, as the BBS will continue to send to the terminal while the INPUT command is waiting on the user. This is so the BBS will be waiting for INPUT when BIG sends the user's response at '>' exit. The INPUT command is good for letting you use any colors you want for a BBS MENU and then to issue some reset commands. ie I#<>1,0,1:I>0:s>0: Also optionally INVOKES MOUSE routine for the X 4 command so ZONES can be pointed to and clicked on, you must use X 4 to define and load the zone strings first and you should use BIG to draw some borders around the zones so the user will know where and what he is selecting when he clicks on a ZONE, that way you have the job of cosmetics, that's half the fun anyway. The selected Zone's associated data string is transmitted to the BBS as soon as BIG exits the chain from the last I# . ZONE 47 is the default ZONE, it's associated data string will be sent if no ZONES match where the user clicked. You should always define ZONE 47. You may find the X 6 command useful too. 1st parameter = Transmitt carriage return at the end of the string INPUTted? 1 = YES 0 = NO 2nd parameter = INPUT type 0 = One key, (hot key input for FoReM) 1 = String, with a return to end input from user, max string length = 128 2 = MOUSE ZONE, activate a POLYMARKER mouse pointer, use the " T " command to select mouse type and size and the " C " command to set mouse color. User moves mouse and clicks on a "ZONE". Selection is processed when button is released. The associated ZONE string is copied into INPUT's string to be transmitted to BBS at the end of the BIG script chain. 3rd parameter = Output options 0 = Don't show input typed from user on his screen. Has no effect on Mouse ZONES. 1 = Show input typed from user on screen. Has no effect on Mouse ZONES. 2 = Show input but throw it away, don't transmit it at the end of the chain. Does effect Mouse ZONE. 3 = Don't show input from user, and throw it away too. Does effect Mouse ZONE. ( continued on next page ) - 15 - Note: If 2 ZONES areas are over lapping on the screen the ZONE with the lower value ID number will get selected when the mouse is clicked on both ZONEs at the same time. +----+--------------------+ user clicks in here ---> |ID=1| | ZONE 1 gets selected +----+ ID=10 | | | +-------------------------+ +----+--------------------+ user clicks in here ---> |ID=7| | ZONE 2 gets selected +----+ ID=2 | | | +-------------------------+ Note also that the mouse is driven by the ARROW keys, so the mouse driver has to produce these or user presses ARROW keys. ? Ask BIG I#? 0: --------- ? = command identifier Asks the Instant Graphics terminal questions. Transmit it to the BBS ( Host system ). 1st parameter selects the question to ask. 0 = Version number, BIG will transmit in ASCII to the host system the version number it is ending in a R if registered. 1 = Asks BIG what resolution the terminal is in response: 1: EGA/VGA low resolution 640x200 2: EGA/VGA medium resolution 640x350 3: VGA only high resolution 640x480 2 = Is sound card installed and memory allocated for it? Note that sound card support only available to registered users. response: 0: No sound card found and or buffer not allocated for it. 1: Sound card was found and 64K buffer is allocated. - 16 - & loop a command I#& 0,198,6,0,L,4,0,0,x,y: ----------------- XOR stepping example: I#G 1,0,0,0,50,50: I#&>198,0,2,0,G|4,2,1,x,x: & = command identifier Loops a operation specified number of times with stepping, special options for XOR ing and the 'W'rite text command. The CHAIN character > works directly after the &>, you can loop a chain of commands, see parameter 5, BUT you can't loop a loop. Still this command is very powerful and worth every effort to learn! 1st parameter = FROM value if from value bigger than TO value loop will detect and step backwards. 2nd parameter = TO value 3rd parameter = step value, positive number only. 4th parameter = DELAY in 18ths of a between each step of the loop. 5th parameter = command Identifier to loop. optional specification character after 5th parameter instead of comma: | = XOR stepping @ = get text for W command everytime otherwise text written from loop with the W command is last text written with W command before the loop was executed. W command now ignores CR and LF so loop command can be used for easy Written text placement with the loop's stepping. NOTE: (Chain Gang) If a > symbol is given here as a command identifer chain gang option is invoked. This allows multiple commands to LOOPed. Instead of one command specified for this parameter a string of command identifers are passed. The > to get BIG's attention to chain gang and ending with the @ FOLLOWED by a comma. Like this >CL@, C is at command position 0 L is at command position 1 The position of the command is the key to which command will be executed. There can be up to 128 (0-127) commands in this command string in any order you like. ( continued on next page ) - 17 - Example: switching line color and drawing lines too I#I>0:R>1: I#&>0,636,6,0,>CL@,16,0)1,3:1)319,99,x,20:0)1,2:1)319,99,+2,20: You can replace the ) above with the commands themself like so: I#&>0,636,6,0,>CL@,16,0C1,1:1L319,99,x,179:0C1,2:1L319,99,+2,179: I#t>9:I>0:R>2:b>7: 6th parameter = number of parameters command that to be looped requires. You should at least specify the number the command requires ie L command requires 4 , ie W command 2. You can specify multiples of the required number such as 8 or 12 for the L command Max up to 2048. This will work like BASIC's READ DATA statements between each loop step. Also note a _ underscore may be used to split parameters across lines if it is used in place of the first digit of value, this will make huge detailed files smaller. REMAINING parameters = whatever the command being looped requires. If you use a "x" as a parameter it will be stepped in the direction of the FROM TO values, if you use a "y" the loop will step the value in a reverse direction. You can use both "x" and "y" at the same time. If you use a number it will remain as a constant for the command being looped through out the loop execution. You can preceed constants for a command being LOOPed with +,-, or ! +CONSTANT will ADD the CONSTANT to the x step value. -CONSTANT will SUBTRACT the CONSTANT from the x step value. !CONSTANT will SUBTRACT the x step value from the CONSTANT. example I#&>10,50,4,0,L,4,x,+90,!639,-2: loop example, Written text option: I#E>1,2,0:C>3,2:s>0: I#&>20,140,20,0,W@2,0,x,A. Item 1@ B. Item 2@ C. Item 3@ D. Item 4@ E. Item 5@ F. Item 6@ G. Item 7@ I#W>200,140,Power Graphics with BIG!!!@ I#& 140,20,20,0,W,2,200,x: I#W>10,180,That's so DEVO!!!@ Example of loop used to READ DATA and step within at the same time in both directions. I#I>0:s>0:C>1,12: I#&>0,639,4,0,L,16,319,99,x,0:319,99:y,0:319,99,x,199:319,99:y,199:t>3: - 18 - eXtended Commands ----------------- Extended commands are invoked by a captial X and a number ranging from 0 to 9999. Opens a door for 10,000 new commands!!! 0 SPRAY PAINT I#X 0,400,50,200,145,200: --------------- X 0 = command identifier Plots polymarkers at random in a rectangular area with specified concentration. 1st parameter upper left corner X coordinate. 2nd parameter upper left corner Y coordinate. 3rd parameter X range from upper left corner, 255 max. 4th parameter Y range from upper left corner, 255 max. 5th parameter concentration, 9999 maximum. 1 SET User Defined Fill Pattern I#X 1,12,1,0,126,24,24,126,24,126,0: ------------------------------- or I#X 1,12,0: X 1 = command identifier Redefine or restore a Fill pattern. Only Fill patterns 12 thru 23 are redefinable. These patterns are used by specifying them with the A command. 1st parameter = Pattern Number (0-23) 2nd parameter = Alter Restore flag (0-1) IF this flag is 0 then no further parameters required and pattern is set to internal default. IF this flag is 1 then 8 more parameters are given in the range of 0 to 255: Imagine a 8x8 grid each bit a cell in the grid. 3rd parameter = decimal number for binary fill pattern 4th parameter = decimal number for binary fill pattern 5th parameter = decimal number for binary fill pattern 6th parameter = decimal number for binary fill pattern 7th parameter = decimal number for binary fill pattern 8th parameter = decimal number for binary fill pattern 9th parameter = decimal number for binary fill pattern 10th parameter = decimal number for binary fill pattern 2 SET RANDOM FUNCTION RANGE I#X 2,0,50: --------------------------- Sets the range of the numbers returned when the 'r' is used in place of constant value parameter given to a BIG command. Above example sets r to a range of 0 to 50. The range value can be from 0 up to 9999. To use it in the line command or any other like so: L 0,r,400,r: another example with the & "loop" command: I#s>0:X>2,0,639:P>0,0:& 0,128,1,0,D,2,r,r: - 19 - 3 Define Custom Text Size I#X 3,2,1,3,2: ------------------------- above sets text 2x as wide, 1.5x as high. X 3 = command identifier Defines custom text size for text output with W command after a text size of 0 is set with E command. The following parameters are used to obtain a ratio for text width and heigth. Ranges for these parameters are 1 to 4 only. 1st parameter = number to be divided 2nd parameter = this number is used to divide first parameter to obtain a ratio for character width from the normal default. 3rd parameter = number to be divided 4th parameter = this number is used to divide third parameter to obtain a ratio for character height from the normal default. 4 DEFINE and LOAD ZONE data I#X 4,0,0,0,79,49,3,f/L: ---------------------------- X 4 = command identifier Defines a rectangular area and associates a string of characters with it, a ZONE. The string is sent to the bbs by the " < " command if the mouse option is used. This allows point and click operation of remote systems. Zone ID -> 1st parameter = zone number to define/load This is a number between 0-47 or optional value is 9999. If Zone ID is 9999 ALL Zone's retangular areas are defined as -1,-1,-1,-1 by the terminal internally. This is to give a quick clean slate. When Zone Loopback is on the '<' input command will continue to poll a user until he selects a valid defined ZONE. examples I#X 4,9999: I#X 4,9998: Zone Loopback ON I#X 4,9997: Zone Loopback OFF (default loopback OFF) No other parameters are required if Zone ID is 9999-9997. Define Rectangle -> 2nd parameter = upper left corner X coordinate 3rd parameter = upper left corner Y coordinate 4th parameter = lower right corner X coordinate 5th parameter = lower right corner Y coordinate Load string data -> 6th parameter = number of characters in string to transmit to bbs, maximum 80. 7th = the string itself with a ending : seperator, don't count the seperator as part of the string length required for 6th parameter. - 20 - 5 FLOW CONTROL SHUTDOWN I#X 5,0: or I#X 5,1: or I#X 5,4: ----------------------- I#X 5,2,19,2: or I#X 5,3,17,2: X 5 = command identifier Stops the IG terminal from sending Control-S's and Control-Q's on all commands or alters the values sent that XONs and XOFFs the flow and number of repetitions, for safety. This should be used with caution. No flow control is good for issuing a short pause " t " command and let the RS232 buffer get ahead of the terminal, when the pause is over a burst of speed will occur as the terminal catches back up. Data may be lost this way so be careful. Altering the XON XOFF values and repetitions is good for BBS programs that don't use the standard ^s ^q sequence. BIG's default is ^s once XOFF and ^q once XON. The defaults work fine with FoReM and Turbo, so if you switch them be SURE to issue a I#X>5,4: in your log off file to reset the defaults. FoReM sysops may want to add this I#X>5,4: in their welcome file for safety sake. 1st parameter = flow control on/off 0 = OFF 1 = ON 2 = ON set xon value, repetitions 3 = ON set xoff value, repetitions 4 = ON set to BIG's defaults 2nd parameter = ASCII value to send for XON or XOFF. For instance put a 65 here for a captial A. This parameter not included if 1st parameter = 0 or 1 or greater than 3. 3rd parameter = number of repetitions to send the the XON and XOFF character. You can have BIG send different for XONs than XOFFs. Like send 2 XONs and 3 XOFFs. This parameter not included if 1st parameter = 0 or 1 or greater than 3. 6 Set MOUSE Step Rates I#X 6,5,2: ---------------------- X 6 = command identifier Set the X Y step rates for the mouse / arrow key key movements of the pointer invoked by the < input command used with the ZONES. 1st parameter = X step rate range 1 to 15 2nd parameter = Y step rate range 1 to 15 - 21 - 7 Set Adlib SYNC graphics to Music I#X 7,1: or I#X 7,0 ---------------------------------- X 7 = command identifier Attempt to SYNC Graphics to Music. It doesn't work to well but it may be the effect you are looking for. 1st parameter = 1 ON 0 OFF 8 Rotate Color Registers I#X 8,3,9,10,20: ------------------------ X 8 = command identifier Rotates color registers left or right a certain number of places. 1st parameter = Starting color register number 2nd parameter = Ending color register number 3rd parameter = 0 = Reset the registers to what they were when recorded with X>8,1,1,1,1: This will reset all the colors. Any other number = number of times to shift. Note: If the 1st parameter is less than the 2nd parameter, then the colors will shift to the right. If the 1st parameter is greater than the 2nd parameter, then the colors will shift to the left. 4th parameter = time in between color shifts in 1000ths of a second. An application of this function would be to draw a waterfall using, say... registers 8 to 14 for various shades of blue. Once it is drawn properly, you could make the water start flowing with the following: I#X>8,8,14,10,10: Or you could make steam coming out of a locomotive, a flaming mine, lettering made of scrolling rainbows, lightning behind clouds, etc. This command is a very powerful animation tool. - 22 - Sound Commands -------------- b sound effects I#b>7: --------------- b = command identifier Plays sound effects using the computer's speaker. NOTE: Effecfts 10-19 available in registered version only. 1st parameter = sound effect number. Effect # Name: -------- ----- 0 Slide up 1 Slide down 2 Won't start! 3 British siren 4 Rubber band 5 Flappy lips 6 Over here! 7 Pouring water 8 Singing mouse 9 Going up *10 Going down *11 Zipping by *12 Atom *13 Ripples *14 Oh no! *15 Pinball *16 Tune it! *17 Red line *18 Zing *19 Spring * indicates that sound effect is available to registered users only. - 23 - n notes play I#n>0,4000,1000,1: or I#n>1,0,9999,100,10,500,1: ------------- n = command identifer Uses your computer's 1 bit sound and speaker to play pitches from 0 to 9999 timed sustains with sound shut off flag. Or can play a PITCH FROM TO with STEP and delays between steps with trailing SUSTAIN and sound shut on off FLAG. There is no flow control with this command so either a large serial receive buffer has to be set up with the serial DRIVER if a long tune is played OR you can use the '&' LOOP command to execute it safely. Very short tunes shouldn't cause problems. IF 1st parameter is 0 then 2nd parameter = pitch range(0-9999) 3rd parameter = sustain in 1000ths of a sec range(0-9999) 4th parameter = OFF FLAG 0=leave playing, 1=shut off IF 1st parameter is 1 then 2nd parameter = FROM pitch value range(0-9999) 3rd parameter = TO pitch value range(0-9999) 4th parameter = STEP value range(1-9999) 5th parameter = DELAY between STEPs 1000ths sec(0-9999) 6th parameter = SUSTAIN when TO value reached 1000ths sec 7th parameter = OFF FLAG 0=leave playing 1=shut off ____ Pitch table: Note Oct - 1 2 3 4 5 6 ---- C 45 134 268 536 1071 2145 C# 71 142 284 568 1136 2273 D 75 150 301 602 1204 2408 D# 80 159 319 638 1275 2551 E 84 169 338 676 1351 2703 F 90 179 358 716 1432 2864 F# 95 190 379 758 1517 3034 G 100 201 402 804 1607 3215 G# 106 213 426 851 1703 3406 A 113 225 451 902 1804 3608 A# 119 239 478 956 1991 3823 B 127 253 506 1012 2025 4050 - 24 - Sound Card Support ------------------ All sound card support is for registered users only, doesn't work in the DEMO VERSION. The BF.EXE viewer however will execute these commands. The Adlib tm Sound Card is supported. If your sound card is Adlib tm compatible it should work. You may have to reset the sound card's port address use ALT-O to change this. To convert ROL files to to BIG format you will need files contained in ADPRO103.ZIP you will have to download this seperately. You have to break down the STANDARD.BNK to *.INS files with BANKMNG.EXE /g option (run Bankmng on a floppy in a subdirectory!) and then run the utility in ADPRO103.ZIP CONVERT.EXE that turns ROLS into *.MUS and *.SND files then you run the BIG utility: MS2BIG *.mus *.snd MS2BIG will play and write out the converted ROL to *.BIG file that can be uploaded into a message or sent as a BBS logon file. BIG format songs are larger than a ROL and the MS2BIG utility will only output BIG format files up to 65534 bytes the size of the terminal's buffer for playback. You can HIT the ESC KEY while MS2BIG is playing and cut a short version of the conversion. The BIG format music will be played in the background and graphics commands can be executed while the music is playing! The sound effect commands however take precendence over the sound card and will temporarily slow the sound card music. The "?" ask IG command will tell a DOOR program if a sound card is installed. With the play buffer slice BIG format sound card music files can be used as spectacular sound effects! If you don't have a Adlib tm sound card you don't know what you're missing!!! Check one out! N sound card commands I#N>4: I#N>5,1,001: ---------------------- I#N>3,1,121;3,121: N>0,20,222,clockrate(2bytes)data.......... N>1,20,222,clockrate(2bytes)data.......... The 'N' command talks to the Adlib tm sound card. You have serveral options see below. IF 1st parameter = 0 load buffer only 2nd parameter = number of bytes to load *1000 so a 20 here means 20000 max here is 65 for 65000. 3rd parameter = remaining number of bytes to load. This is added to the value of the 2nd parameter to arrive at a value greater than 9999 if need be. The 3rd parameter is followed by a comma and 2 bytes that make the integer value to set the clock rate for the tempo and the rest is raw data and only the converter program and playback routine know whats going on there. Use the MS2BIG.EXE program to make the N>0 and N>1 commands it would be near impossible by hand. IF 1st parameter is 1 Load and Play buffer. 2nd parameter = number of bytes to load *1000 so a 20 here means 20000 max here is 65 for 65000. 3rd parameter = remaining number of bytes to load. (continued on next page) - 25 - ( N commands continued ) IF 1st parameter = 2 execute buffer no other paramerters needed. Plays whatever is in the buffer from begining to end. IF 1st parameter = 3 Play slice of buffer. 2nd parameter = FROM play value *1000 3rd parameter = FROM play value remainder 4th parameter = TO play value *1000 5th parameter = TO play value remainder IF 1st parameter = 4 do warm reset to sound card. No other parameters required. IF 1st parameter = 5 set clock rate on the fly. 2nd parameter = clock rate *1000 3rd parameter = clock rate remainder normal rates are usually 1000 to 2400 The lower the value the faster the tempo.